package io.bdmc.modules.bss.service;

import com.baomidou.mybatisplus.extension.service.IService;
import io.bdmc.common.utils.MyPage;
import io.bdmc.modules.bss.entity.DeviceDevice;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 设备基础信息 服务类
 * </p>
 *
 * @author ping
 * @since 2020-06-29
 */
public interface IDeviceDeviceService extends IService<DeviceDevice> {

    MyPage<DeviceDevice> mySelectPage(MyPage<DeviceDevice> myPage);

    List<HashMap<String, Object>> ztreeDeviceList(Long deptId);

    HashMap<String, Object> deviceFibreAlarmCount(Long deptId);

    List<DeviceDevice> listAllDevices();

    List<DeviceDevice> listAllFms();

    List<HashMap<String, Object>> deviceFibreMatchList();

    DeviceDevice getDeviceDetail(Integer deviceId);

    DeviceDevice getDeviceBySn(String sn);

    DeviceDevice getDeviceByIp(String ip);

    List<DeviceDevice> listByType(String deviceType);

    /**
     * 根据sn获取单盘
     * 
     * @param sn sn
     * @return 单盘
     */
    DeviceDevice getDeviceDiskBySn(String sn);

    DeviceDevice selectParentDeviceBySn(String sn);

    List<Map<String, Object>> linkTree(Long deptId);

    List<Map<String, Object>> deviceTypeSum(Long deptId);

    Boolean deleteBySlopAndInsertNew(Integer slotNum, Integer parentId, DeviceDevice newDevice);

    List<DeviceDevice> getFmsAndOtdr();

    List<DeviceDevice> getOtdrDevice();

    /**
     * 根据设备大类和型号获取设备列表
     * 
     * @param deviceDigest 大类
     * @param deviceType   型号
     * @return 设备列表
     */
    List<DeviceDevice> getByDigestAndType(String deviceDigest, String deviceType);

    List<DeviceDevice> getDirectConnDevice();

}
